shake: シェルスクリプトが書けるMakefile
つくってる
初/icons/golang.icon
これは何かと言うとタイトル通り「シェルスクリプトが書けるMakefile」です
最近は色々なプロジェクトでmakeを使いまくってて便利に思っていたのだけど、使い込んでいくうちにいくつかの不満が募っていった
それは以下の二点
タスクの中にピュアシェルスクリプトを書けない
C由来の不要な機能がたくさんある
タスクの中にピュアシェルスクリプトを書けない
これは困らない人も多いと思う
makeはシェルスクリプトではない
makeはタスクの中身を、1行ずつ/bin/sh -c で実行する
なので、複数行にまたがるシェルスクリプト(ifとかforとか)を記述することができない
まぁこれは本来の目的から考えれば不思議ではないんだけど
これについては別途シェルスクリプトファイルを作って実行するとかをやってた
あと、makefileのマクロ式が$()を使うせいで、シェルのこの機能も使えない
のでとにかく単純にシェルスクリプトを書きたいときに困った
C由来の不要な機能がたくさんある
これは上記マクロ式もそうなんだけど
個人的にはマクロはシェルスクリプトの変数が使えるなら必要ないし、ターゲットの中でシェルスクリプトのすべての機能が使えるなら補って余りあると思った
あとは.PHONYとか
ターゲット名のファイルがあると実行をやめてしまうことはC以外のプロジェクトでは必要ない機能
なのでそれもいれてません
逆にmakeの利点としては、
ターゲットの依存関係を記述できる
引数にターゲットを渡すことで順番に実行してくれる
ことが大きい
なので、これらの要件を満たすためのツールを作ろうと2ヶ月位寝かせていた
とりあえず動くので様子見